Juliaでは、テキストは2つの異なる構造的エンティティによって処理されます: 32ビットのChar 基本型と不変の UTF-8エンコードされたString。他の言語では文字は長さ1の文字列として扱われるのに対し、Juliaでは Char をUnicodeコードポイントを表す一級の数値型として扱います。
1. 型階層とメモリ
具体的な Char は$32$ビットの基本型( AbstractCharのサブタイプ)です。組み込みの String ( AbstractStringのサブタイプ)は完全なUnicode範囲をサポートします。一方、 Char は固定サイズですが、 String は可変幅であり、個々の文字は1~4バイトを占めます。ASCIIの遷移点は$0x80(128)$にあります。
2. 算術演算と比較
なぜなら Char が数値のコードポイントを表すため、算術演算が可能です。 Int('a') で97を得られ、 Char(97) で'a'を得られます。辞書順比較がサポートされています: 'X' < 'x' は真になります。これは、Unicodeでは大文字が小文字より前に来るためです。
| 特徴 | Char ('a') | String ("a") |
|---|---|---|
| 型 | Char | String |
| サイズ | 固定$32$ビット | 可変UTF-8 |
| 変更可能 | 該当なし(値型) | いいえ(不変) |
次のような連続比較 'A' <= 'X' <= 'Y' は true または false Unicode順に基づいて評価されます。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>